﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpArch.NHibernate;

namespace ADIGRE.Infrastructure.Queries.Despesa
{
    public class DespesaQuery : NHibernateQuery<Domain.Despesa>, IDespesaQuery
    {
        public override IList<Domain.Despesa> ExecuteQuery()
        {
            throw new NotImplementedException();
        }

        public IList<Domain.Despesa> GetAll()
        {
            return Session.QueryOver<Domain.Despesa>()
                   .WhereNot(x => x.IsExcluido).WhereNot(x => x.IsEncerrado)
                   .List();
        }

        public IList<Domain.Despesa> GetPagamentoEmAberto()
        {
            return Session.QueryOver<Domain.Despesa>()
                   .WhereNot(x => x.IsExcluido).WhereNot(x => x.IsEncerrado).And(x => x.EnumLancamento == Domain.EnumLancamento.Pagamento)
                //.And(x => x.VlTotal < x.VlQuitado || x.EnumModalidadePagamento == Domain.EnumModalidadePagamento.ParcelaContinuada)
                   .List();
        }

        public IList<Domain.Despesa> GetReciboEmAberto()
        {

            return Session.QueryOver<Domain.Despesa>()
                    .WhereNot(x => x.IsExcluido).WhereNot(x => x.IsEncerrado).And(x => x.EnumLancamento == Domain.EnumLancamento.Recibo || (x.EnumLancamento == Domain.EnumLancamento.Pagamento && x.HasRecibo))
                //|| (x.EnumLancamento == Domain.EnumLancamento.Pagamento && x.HasRecibo
                //&& (x.VlTotal < x.VlQuitado || x.EnumModalidadePagamento == Domain.EnumModalidadePagamento.ParcelaContinuada)))
                    .List();
        }

    }
}
